Arrangements([1,2,3],2);
[ [ 1, 2 ], [ 1, 3 ], [ 2, 1 ], [ 2, 3 ], [ 3, 1 ], [ 3, 2 ] ]
Hecho con Quarto
Si queremos calcular el conjunto de secuencias de \(r\) elementos tomados a partir de \(n\) elementos iniciales, podemos Arrangements
. También podemos usar NrArrangements
para conocer cuántas hay.
Arrangements
permite repeticiones el el conjunto de elementos del que escogemos las secuencias.
Las permutaciones de una lista se pueden construir con Permutations
.
[ [ 1, 2, 3 ], [ 1, 3, 2 ], [ 2, 1, 3 ], [ 2, 3, 1 ], [ 3, 1, 2 ], [ 3, 2, 1 ] ]
Si lo que queremos son \(n\)-uplas, usamos Tuples
.
[ [ 1, 1 ], [ 1, 2 ], [ 1, 3 ], [ 2, 1 ], [ 2, 2 ], [ 2, 3 ], [ 3, 1 ], [ 3, 2 ], [ 3, 3 ] ]
Cuando lo que queremos son conjuntos en vez de secuencias, usamos combinaciones.
El comando PartitionsSet
se utiliza para calcular el número de particiones de un conjunto dado.
[ [ [ 1 ], [ 2 ], [ 3 ] ], [ [ 1 ], [ 2, 3 ] ], [ [ 1, 2 ], [ 3 ] ], [ [ 1, 2, 3 ] ], [ [ 1, 3 ], [ 2 ] ] ]
Si especificamos un segundo argumento, calcula el número de particiones con cardinal exactamente ese argumento.
[ [ [ 1 ], [ 2, 3, 4, 5 ] ], [ [ 1, 2 ], [ 3, 4, 5 ] ], [ [ 1, 2, 3 ], [ 4, 5 ] ], [ [ 1, 2, 3, 4 ], [ 5 ] ], [ [ 1, 2, 3, 5 ], [ 4 ] ], [ [ 1, 2, 4 ], [ 3, 5 ] ], [ [ 1, 2, 4, 5 ], [ 3 ] ], [ [ 1, 2, 5 ], [ 3, 4 ] ], [ [ 1, 3 ], [ 2, 4, 5 ] ], [ [ 1, 3, 4 ], [ 2, 5 ] ], [ [ 1, 3, 4, 5 ], [ 2 ] ], [ [ 1, 3, 5 ], [ 2, 4 ] ], [ [ 1, 4 ], [ 2, 3, 5 ] ], [ [ 1, 4, 5 ], [ 2, 3 ] ], [ [ 1, 5 ], [ 2, 3, 4 ] ] ]
El comando Partitions
devuelve el número de formas posibles de sumar el argumento entero que pasemos.
[ [ 1, 1, 1, 1, 1 ], [ 2, 1, 1, 1 ], [ 2, 2, 1 ], [ 3, 1, 1 ], [ 3, 2 ], [ 4, 1 ], [ 5 ] ]
Podemos calcular cuántas de estas tienen una longitud determinada.
Si buscamos particiones ordenadas, hacemos lo siguiente
[ [ 1, 1, 1, 1, 1 ], [ 1, 1, 1, 2 ], [ 1, 1, 2, 1 ], [ 1, 1, 3 ], [ 1, 2, 1, 1 ], [ 1, 2, 2 ], [ 1, 3, 1 ], [ 1, 4 ], [ 2, 1, 1, 1 ], [ 2, 1, 2 ], [ 2, 2, 1 ], [ 2, 3 ], [ 3, 1, 1 ], [ 3, 2 ], [ 4, 1 ], [ 5 ] ]
Así las soluciones enteras positivas de \(x+y=5\) vienen dadas por
Muchas de estas funciones tienen una versión con iteradores, para no tener que generarlas todas y almacenarlas en memoria.
IteratorOfCombinations
, IteratorOfPartitions
, IteratorOfTuples
.